Conventional disk array data storage systems have multiple storage disk drive devices that are arranged and coordinated to form a single mass storage system. The common design goals for mass storage systems include low cost per megabyte, high input/output performance, and high data availability. Data availability involves the ability to access data stored in the storage system while ensuring continued operation in the event of a disk or component failure. Data availability is often provided through the use of redundancy where data, or relationships among data, are stored in multiple locations on the storage system. In the event of failure, redundant data is retrieved from the operable portion of the system and used to regenerate the original data that is lost due to the component failure.
There are two common methods for storing redundant data: mirror and parity. In mirror redundancy, data is duplicated and stored in two separate areas of the storage system. In parity redundancy, redundant data is stored in one area of the storage system, but the size of the redundant storage area is less than the remaining storage space used to store the original data.
RAID (Redundant Array of Independent Disks) storage systems are disk array systems in which part of the physical storage capacity is used to store redundant data. RAID systems are typically characterized as one of six architectures, enumerated under the acronym RAID. A RAID 0 architecture is a disk array system that is configured without any redundancy. Since this architecture is really not a redundant architecture, RAID 0 is often omitted from a discussion of RAID systems.
A RAID 1 architecture involves storage disks configured according to mirror redundancy. Original data is stored on one set of disks and a duplicate copy of the data is kept on separate disks. The RAID 2 through RAID 5 architectures all involve parity-type redundant storage. Of particular interest, a RAID 5 system distributes data and parity information across all of the disks. Typically, the disks are divided into equally sized address areas referred to as "blocks". A set of blocks from each disk that have the same unit address ranges are referred to as "stripes". In RAID 5, each strip has N blocks of data and one parity block which contains redundant information for the data in the N blocks.
In RAID 5, the parity block is cycled across different disks from stripe-to-stripe. For example, in a RAID 5 system having five disks, the parity block for the first stripe might be on the fifth disk; the parity block for the second stripe might be on the fourth disk; the parity block for the third stripe might be on the third disk; and so on. The parity block for succeeding stripes typically "precesses" around the disk drives in a helical pattern (although other patterns are possible). RAID 2 through RAID 4 architectures differ from RAID 5 in how they compute and place the parity block on the disks.
A background discussion of RAID systems, and various ways to logically partition RAID systems, is found in U.S. Pat. No. 5,519,844 to David C. Stailmo, entitled "Logical Partitioning of a Redundant Array Storage System".
A hierarchical data storage system permits data to be stored according to different techniques. In a hierarchical RAID system, data can be stored according to multiple RAID architectures, such as RAID 1 and RAID 5, to afford tradeoffs between the advantages and disadvantages of the redundancy techniques.
U.S. Pat. No. 5,392,244 to Jacobson et al., entitled "Memory Systems with Data Storage Redundancy Management", describes a hierarchical RAID system that enables data to be migrated from one RAID type to another RAID type as data storage conditions and space demands change. This patent, which is assigned to Hewlett-Packard Company, describes a multi-level RAID architecture in which physical storage space is mapped into a RAID-level virtual storage space having mirror and parity RAID areas (e.g., RAID 1 and RAID 5). The RAID-level virtual storage space is then mapped into an application-level virtual storage space, which presents the storage space to the user as one large contiguously addressable space. During operation, as user storage demands change at the application-level virtual space, data can be migrated between the mirror and parity RAID areas at the RAID-level virtual space to accommodate the changes. For instance, data once stored according to mirror redundancy may be shifted and stored using parity redundancy, or vice versa. The '244 patent is hereby incorporated by reference to provide additional background information.
With data migration, the administrator is afforded tremendous flexibility in defining operating conditions and establishing logical storage units (or LUNs). As one example, the RAID system can initially store user data according to the optimum performing RAID 1 configuration. As the user data approaches and exceeds 50% of array capacity, the disk array system can then begin storing data according to both RAID 1 and RAID 5, and dynamically migrating data between RAID 1 and RAID 5 in a continuous manner as storage demands change. At any one time during operation, the data might be stored as RAID 1 or RAID 5 on all of the disks. The mix of RAID 1 and RAID 5 storage changes dynamically with the data I/O (input/output). This allows the system to optimize performance versus an increasing amount of user data.
To ensure that sufficient space is retained for data migration, the RAID system limits the number of blocks that can be allocated to mirror RAID areas. One particular approach is described in U.S. Pat. No. 5,659,704 to Burkes et al., entitled "Methods and Systems for Reserving Storage Space for Data Migration in a Redundant Hierarchic Data Storage System by Dynamically Computing Maximum Storage Space for Mirror Redundancy". This patent, which is assigned to Hewlett-Packard Company, describes a hierarchic RAID system that computes a maximum number of virtual blocks in mirror RAID areas based on a function of the physical capacity of the storage disks, the number of storage disks, and the allocated capacity at the time of each storage request from the user. This patent is incorporated by reference.
To avoid over-committing the RAID-level virtual storage space, the RAID system computes a total virtual capacity that is available to the administrator to handle future storage requests. The available capacity computation is based on such factors as size and number of disks, characteristics of the RAID 1 and RAID 5 storage, a minimum percentage to be used for RAID 1 storage, whether an active hot spare option is requested, and so forth. U.S. patent Ser. No. 08/382,350 to Burkes et al., entitled "Methods for Avoiding Over-Commitment of Virtual Capacity in a Redundant Hierarchic Storage System", filed Feb. 1, 1995, describes one technique for computing available capacity in more detail. This patent application, which is assigned to Hewlett-Packard Company, is incorporated by reference.
It is clear from the nature of RAID technology that pure RAID 1 consumes physical space at a faster rate than an architecture that employs a dynamic mixture of RAID 1 and RAID 5 (as is taught in the '244 patent). Additionally, the combined RAID 1 and RAID 5 architecture consumes physical space at a faster rate than pure RAID 5. In a system with fixed physical capacity, it would be beneficial to determine how much usable capacity can be afforded simultaneously for each logical unit type, given the diversity of consumption rates among the various types.